Python常见错误之:字典在for循环中数据被覆盖

您所在的位置:网站首页 fetch cursor into每一次循环数据会被覆盖吗 Python常见错误之:字典在for循环中数据被覆盖

Python常见错误之:字典在for循环中数据被覆盖

2024-07-13 05:21| 来源: 网络整理| 查看: 265

先看例子

tmp_lst = [] tmp_dict = {1:xx,2:xx,3:xx...} for i in range(5): for row in tmp_dict.get(i): row['count'] = i tmp_lst.append(row)

最后会发现tmp_dict里的每一个元素的“count”都是4

这是因为所有的row都指向了同一个内存地址,可以用id(row)打出地址查看

解决办法:

tmp_lst = [] tmp_dict = {1:xx,2:xx,3:xx...} for i in range(5): for row in tmp_dict.get(i): out_row = row.copy() out_row ['count'] = i tmp_lst.append(out_row)

“在python中,对象赋值实际上是对象的引用。当创建一个对象,然后把它赋给另一个变量的时候,python并没有拷贝这个对象,而只是拷贝了这个对象的引用”

今日有感:如此简单感觉根本不可能会犯的错误,还是不经意间出现了,要加强底层学习,做事更加认真。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3